// routes/todoRoutes.js
const express = require('express');
const todoController = require('../controllers/todoController');

const router = express.Router();

// 获取所有待办事项
/**
 * @swagger
 * /todos:
 *   get:
 *     summary: 获取所有待办事项
 *     description: 获取所有待办事项，可以通过查询参数过滤已完成的待办事项。
 *     tags:
 *       - Todos
 *     parameters:
 *       - name: completed
 *         in: query
 *         description: 如果设置为 "true"，则只返回已完成的待办事项。可选参数。
 *         required: false
 *         type: boolean
 *     responses:
 *       '200':
 *         description: 成功返回待办事项列表
 *         content:
 *           application/json:
 *             schema:
 *               type: array
 *               items:
 *                 type: object
 *                 properties:
 *                   id:
 *                     type: integer
 *                     format: int64
 *                   title:
 *                     type: string
 *                   completed:
 *                     type: boolean
 *       '500':
 *         description: 内部服务器错误
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 error:
 *                   type: string
 *                   example: "获取待办事项失败"
 */
router.get('/', todoController.getAllTodos);

// 创建新的待办事项
/**
 * @swagger
 * /todos:
 *   post:
 *     summary: 创建新的待办事项
 *     description: 创建一个新的待办事项。
 *     tags:
 *       - Todos
 *     requestBody:
 *       required: true
 *       content:
 *         application/json:
 *           schema:
 *             type: object
 *             properties:
 *               title:
 *                 type: string
 *                 example: 新的任务
 *                 description: 待办事项的标题
 *               completed:
 *                 type: boolean
 *                 example: false
 *                 description: 是否已完成的标记，默认为 false
 *     responses:
 *       '200':
 *         description: 新待办事项成功创建
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 id:
 *                   type: integer
 *                   format: int64
 *                   description: 新创建的待办事项的ID
 *                 title:
 *                   type: string
 *                   description: 待办事项的标题
 *                 completed:
 *                   type: boolean
 *                   description: 是否已完成的标记，初始默认为 false
 *       '400':
 *         description: 请求参数错误
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 error:
 *                   type: string
 *                   description: 错误信息
 *                   example: "标题是必需的"
 *       '500':
 *         description: 内部服务器错误
 *         content:
 *           application/json:
 *             schema:
 *               type: object
 *               properties:
 *                 error:
 *                   type: string
 *                   description: 错误信息
 *                   example: "新增待办事项失败"
 */
router.post('/', todoController.createTodo);

// 删除待办事项
router.delete('/:id', todoController.deleteTodo);

// 更新待办事项状态
router.patch('/:id', todoController.updateTodoStatus);

// 获取学生信息
router.get('/student-info', todoController.getStudentInfo);

module.exports = router;